package com.ityedao.IO字节流.文件字节输入流.每次读取多个字节;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileInputStreamTest {
    public static void main(String[] args) throws IOException {
        // 1、创建一个字节输入流对象代表字节输入流管道与文件接通
        FileInputStream is = new FileInputStream("src\\ityedao2.txt");

        // 2、开始读取文件中的字节数据：每次读取多个字节
        // public int read(byte[] buffer) :
        // 每次用一个字节数组去读取数据，返回字节数组读取了多少个字节，如果发现没有数据可读会返回 -1。
//        byte[] buffer = new byte[3]; // 数组越大性能越好
//        int len = is.read(buffer);
//        String rs = new String(buffer);
//        System.out.println(rs);
//        System.out.println("当次读取的字节数量：" + len);
//
//        int len2 = is.read(buffer);
//        // 注意：读取多少，倒出多少。
//        String rs2 = new String(buffer, 0, len2);
//        System.out.println(rs2);
//        System.out.println("当次读取的字节数量：" + len2);
//
//        int len3 = is.read(buffer);
//        System.out.println(len3); // -1

        // 3、优化 使用循环改造
        byte[] buffer = new byte[3];
        int len; // 记住每次读取了多少个字节。
        while ((len = is.read(buffer)) != -1){
            String rs = new String(buffer, 0, len);
            System.out.print(rs);
        }
        // ①性能得到了明显的提升！！
        // ②这种方案也不能避免读取汉字输出乱码的问题！！！


        // 关闭流
        is.close();

    }
}
